## This code cell will not be shown in the HTML version of this notebook
# imports from custom library
import sys
sys.path.append('../../')
datapath = '../../mlrefined_datasets/nonlinear_superlearn_datasets/'
# plotting tools
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import autograd.numpy as np
# this is needed to compensate for %matplotlib notebook's tendancy to blow up images when plotted inline
%matplotlib notebook
from matplotlib import rcParams
rcParams['figure.autolayout'] = True
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
%load_ext autoreload
%autoreload 2
# load in
import copy
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np
# load in dataset
csvname = datapath + 'noisy_sin_sample.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = copy.deepcopy(data[:-1,:])
y = copy.deepcopy(data[-1:,:])
### boosting ###
num_units = 25
runs1 = []
for j in range(num_units):
print ('fitting ' + str(j + 1) + ' units')
# import the v1 library
mylib1 = nonlib.library_v1.superlearn_setup.Setup(x,y)
# choose features
mylib1.choose_features(name = 'polys',degree = j + 1)
# choose normalizer
mylib1.choose_normalizer(name = 'standard')
# choose cost
mylib1.choose_cost(name = 'least_squares')
# fit an optimization
mylib1.fit(max_its = 1,optimizer = 'newtons method',epsilon=10**(-10))
# add model to list
runs1.append(copy.deepcopy(mylib1))
# animate the business
frames = 5
demo1 = nonlib.main_regression_animators.Visualizer(csvname)
demo1.animate_regressions(runs1,frames)
# generate set of split points and dimensions for all possible steps, as defined by
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np
# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + 'noisy_sin_sample.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]
# import booster
mylib2 = nonlib.boost_lib2.superlearn_setup.Setup(x,y)
# choose normalizer
mylib2.choose_normalizer(name = 'standard')
# choose cost|
mylib2.choose_cost(name = 'least_squares')
# choose optimizer
mylib2.choose_optimizer('newtons_method',max_its=1)
# run boosting
mylib2.boost(num_rounds=200)
# plot round history
mylib2.plot_history()
# animate the business
frames = 10
demo1 = nonlib.main_regression_animators.Visualizer(csvname)
demo1.animate_boosting_regressions(mylib2,frames)
# generate set of split points and dimensions for all possible steps, as defined by
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np
# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + 'new_circle_data.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]
# import booster
mylib2 = nonlib.boost_lib2.superlearn_setup.Setup(x,y)
# choose normalizer
mylib2.choose_normalizer(name = 'none')
# choose cost|
mylib2.choose_cost(name = 'softmax')
# choose optimizer
mylib2.choose_optimizer('newtons_method',max_its=1)
# run boosting
mylib2.boost(num_rounds=70)
# plot round history
mylib2.plot_history()
# animate the business
frames = 70
demo1 = nonlib.main_classification_animators.Visualizer(csvname)
demo1.animate_boosting_classifications(mylib2,frames)
# generate set of split points and dimensions for all possible steps, as defined by
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np
# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + '2eggs_data.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]
# import booster
mylib2 = nonlib.boost_lib2.superlearn_setup.Setup(x,y)
# choose normalizer
mylib2.choose_normalizer(name = 'none')
# choose cost|
mylib2.choose_cost(name = 'softmax')
# choose optimizer
mylib2.choose_optimizer('newtons_method',max_its=1)
# run boosting
mylib2.boost(num_rounds=50)
# plot round history
mylib2.plot_history()
# animate the business
frames = 10
demo1 = nonlib.main_classification_animators.Visualizer(csvname)
demo1.animate_boosting_classifications(mylib2,frames)
# load in
import copy
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np
# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + 'new_circle_data.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]
### boosting ###
num_units = 10
run2 = []
for j in range(num_units):
#print ('fitting ' + str(j + 1) + ' units')
# import the v1 library
mylib2 = nonlib.library_v1.superlearn_setup.Setup(x,y)
# choose features
mylib2.choose_features(name = 'multilayer_perceptron',layer_sizes = [2,j+1,1],activation = 'tanh')
# choose normalizer
mylib2.choose_normalizer(name = 'standard')
# choose cost
mylib2.choose_cost(name = 'softmax')
# fit an optimization
mylib2.fit(max_its = 5000,alpha_choice = 10**(0),optimizer = 'gradient descent')
# add model to list
run2.append(copy.deepcopy(mylib2))
# animate the business
frames = 10
demo1 = nonlib.main_classification_animators.Visualizer(csvname)
demo1.animate_classifications(run2,frames)
# load in
import copy
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np
# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + 'new_circle_data.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]
### boosting ###
num_units = 5
run2 = []
for j in range(num_units):
#print ('fitting ' + str(j + 1) + ' units')
# import the v1 library
mylib2 = nonlib.library_v1.superlearn_setup.Setup(x,y)
# choose features
mylib2.choose_features(name = 'polys',degree = j+1)
# choose normalizer
mylib2.choose_normalizer(name = 'standard')
# choose cost
mylib2.choose_cost(name = 'softmax')
# fit an optimization
mylib2.fit(max_its = 1,optimizer = 'newtons method')
# add model to list
run2.append(copy.deepcopy(mylib2))
# animate the business
frames = 10
demo1 = nonlib.main_classification_animators.Visualizer(csvname)
demo1.animate_classifications(run2,frames)
demo999.runs2 = demo999.run_net(12)
# load in data
# csvname = datapath + 'new_circle_data.csv'
# demo999 = nonlib.main_classification_comparison.Visualizer(csvname)
# # run approximators
# demo999.runs1 = demo999.run_poly(5)
# demo999.runs2 = demo999.run_net(5)
# demo999.runs3 = demo999.run_trees(20)
# animate
frames = 5
demo999.animate_comparisons(frames)
# csvname = datapath + 'perfect_circle_data.csv'
# demo999 = nonlib.main_classification_comparison.Visualizer(csvname)
demo999.runs3 = demo999.run_trees(100,50)
demo999.runs1 = demo999.run_poly(5)
demo999.runs2 = demo999.run_net(50)
# # animate
frames = 5
demo999.animate_comparisons(frames,pt_size = 20)
demo999.runs2 = demo999.run_net(10)